<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    onload = () => {
        let arr = [1, 2, 3, 4, 7, 8, 9];
        //toString():将arr转化为字符串，元素之间自动拼接
        console.log('toString()', [1, 2, 3, 4].toString());

        //unshift(i):头部添加元素列表i，作用与原数组，返回添加后返回数组长度
        console.log('unshift', arr.unshift(0), arr);

        //shift():头部删除元素，作用于原数组，返回被删元素
        console.log('shift', arr.shift(), arr);

        //push(es):尾部插入元素，作用于原数组
        console.log('push', arr.push(789, 123), arr);

        //pop():尾部删除元素，作用于原来数组，返回被删除的元素
        console.log('pop', arr.pop, arr);

        //concat(arrA):将arrA链接到arr后，返回结果数组，作用于原数组
        console.log('concat', [-1, -2].concat(arr), arr);

        //join('-'):将arr中的每个元素用‘-’来链接成字符串并返回，不作用于原数组
        console.log('join', arr.join('-'));

        //indexOf(e):将arr正方向中首次出现的e元素的位置返回，不存在返回-1
        console.log('indexOf', arr.indexOf(2), arr);

        //lastIndexOf(e):在arr中反方向查找e首次出现的位置，不存在返回-1
        console.log('lastIndexOf', arr.lastIndexOf(9), arr);

        //splice删除,从一号位置开始（包括），删除两个，返回被删除的数组，空则返回空数组
        console.log('splice-delete()', arr.splice(1, 2), arr);

        //splice删除，从2号位置开始（包括），删除0个，添加[3,4]，返回被删除元素的数组，空则返回空数组
        console.log('splice-insert', arr.splice(2, 0, 3, 4), arr);

        //splice修改,从2号位置开始（包括），删除3个，添加[11,22,33],返回被删除的数组，空则返回空数组
        console.log('splice-insert', arr.splice(2, 3, 11, 22, 33), arr);

        //sort():默认按字符串升序排序arr，支持自定义排序规则（返回正数为倒序）
        let arr1 = [1, 3, 5, 2];
        console.log('sort-asc()：', arr1.sort(), arr1);

        //sort()自定义排序:返回正数正着排，返回负数倒着排，返回0则不排
        arr1 = [1, 3, 5, 2];
        console.log('desc-sort()', arr1.sort((a, b) => b - a), arr1);

        //map():对arr1中的每一个元素都调用一次fn函数
        arr1 = [1, 3, 5, 2];
        console.log('map()', arr1.map(e => e * 2), arr1);

        //filter():对arr1中的每个元素都调用一次fn函数进行判断，
        //满足条件的元素作为一个新的数组返回
        arr1 = [1, 3, 5, 2];
        console.log('filter()', arr1.filter(e => e > 3), arr1);

        //every():对arr1中的每个元素都调用一次fn函数进行判断，
        //全部的元素满足返回true，否则返回false
        console.log('every()',arr1.every(e=>e>3));

        //some(),对arr中的每个元素进行fn判断，
        //只要有一个元素满足返回true，否则返回false
        console.log('some()',arr1.some(e=>e>3));

        //reduce():从左到右，对arr中的每一个元素都调用一次fn函数，每次都将返回值赋给p1，最终返回总结果
        console.log('reduce()',arr1.reduce((p1,p2)=>{
            console.log('p1',p1);
            console.log('p2',p2);
            return p1+p2;
        }),arr1);

        //reduceRight():从右到左,对arr中的每一个元素都调用一次fn函数，每次都将返回值赋给p1,最终返回总结果
        console.log('reduceRight()',arr1.reduceRight((p1,p2)=>{
            console.log('p1',p1);
            console.log('p2',p2);
            return p1+p2;
        }),arr1);



    }
</script>
</body>
</html>